﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Librerias;
using System.Windows.Forms;

namespace Librerias
{
    /// <summary>
    /// Clase EN Material
    /// </summary>
     public class ENMaterial:ENBase
    {

        #region variables
        /// <summary>
        /// Identificador del material
        /// </summary>
        private int id;
        /// <summary>
        /// Correro del profesor
        /// </summary>
        private string correo;
        /// <summary>
        /// Asignatura del material
        /// </summary>
        private string asignatura;
        /// <summary>
        /// Titulo del material
        /// </summary>
        private string titulo;
        /// <summary>
        /// Descripcion
        /// </summary>
        private string descripcion;
        /// <summary>
        /// Nombre del archivo. Si es carpeta esta vacio.
        /// </summary>
        private string archivo;

        /// <summary>
        /// Ruta de dropbox del archivo
        /// </summary>
        private string ruta;

        /// <summary>
        /// Componente de acceso a datos
        /// </summary>
        private CADMaterial cad;

        #endregion

        #region get set
        public int Id
        {
            get { return id; }
            set { id = value; }
        }
        public string Correo
        {
            get { return correo; }
            set { correo = value; }
        }
        public string Asignatura
        {
            get { return asignatura; }
            set { asignatura= value; }
        }
        public string Titulo
        {
            get { return titulo; }
            set { titulo = value; }
        }
        public string Descripcion
        {
            get { return descripcion; }
            set { descripcion = value; }
        }
        public string Archivo
        {
            get { return archivo; }
            set { archivo = value; }
        }
        public string Ruta
        {
            get { return ruta; }
            set { ruta  = value; }
        }

        #endregion

        #region constructores

        public ENMaterial()
        {
            correo = "";
            asignatura = "";
            ruta = "";
            titulo = "";
            descripcion = "";
            archivo = "";
            cad = new CADMaterial();
        }

         /// <summary>
         /// Const dado usuario y asignatura
         /// </summary>
         /// <param name="usu">usuario</param>
         /// <param name="asig">asignatura</param>
        public ENMaterial(string usu, string asig)
        {
            correo = usu;
            asignatura = asig;
            ruta = "/"+asig.Replace(" ","")+"/";
            titulo="";
            descripcion="";
            archivo="";
            cad = new CADMaterial();
        }

         /// <summary>
         /// Const dado usuario, aignatura, direccion
         /// </summary>
         /// <param name="usu">usuario</param>
         /// <param name="asig">asignatura</param>
         /// <param name="direccion">dirección</param>
        public ENMaterial(string usu, string asig,string direccion)
        {
            correo = usu;
            asignatura = asig;
            ruta = direccion;
            titulo = "";
            descripcion = "";
            archivo = "";
            cad = new CADMaterial();
        }

        


        public ENMaterial(int unid, string uncorreo, string unasignatura, string untitulo, string undescripcion, string unarchivo, string unaruta)
        {
            id = unid;
            correo = uncorreo;
            asignatura = unasignatura;
            titulo = untitulo;
            descripcion = undescripcion;
            archivo = unarchivo;
            ruta = unaruta;
            cad = new CADMaterial();
        }


        public ENMaterial(string uncorreo, string unasignatura, string untitulo, string undescripcion)
        {
            correo = uncorreo;
            asignatura = unasignatura;
            titulo = untitulo;
            descripcion = undescripcion;
            cad = new CADMaterial();
        }
        #endregion


        /// <summary>
        /// Persiste material  
        /// </summary>
        /// <param name="barra">barra progreso</param>
        public void Alta(ProgressBar barra)
        {
            cad.SubirMaterial(this,barra);
        }

         /// <summary>
         /// Modifica material
         /// </summary>
        public void Modificar()
        {
            cad.ModificarMaterial(this);
        }

         /// <summary>
         /// Nos trae los materiales
         /// </summary>
        /// <returns>DataTable con ellos</returns>
        public DataTable GetMateriales()
        {
            return cad.GetMateriales(ruta);
        }
        public DataTable GetMaterialesSinRuta()
        {
            return cad.GetMaterialesSinRuta();
        }

        /// <summary>
        /// Nos trae los materiales con una cadena y un campo
        /// </summary>
        /// <param name="cadena">cadena</param>
        /// <param name="campo">campo</param>
        /// <returns>DataTable</returns>
        public DataTable GetMateriales(string cadena, string campo)
        {
            return cad.GetMateriales(ruta, cadena, campo);
        }

        public DataTable GetMaterialesWebSegunAsignaturasAlumno(string alum)
        {
            return cad.GetMaterialesWebSegunAsignaturasAlumno(alum);
        }

        public DataTable GetMaterialesWebSegunAsignaturasProfesor(string alum)
        {
            return cad.GetMaterialesWebSegunAsignaturasProfesor(alum);
        }

        public DataTable GetMaterialesWebSegunAsignaturas(string asig)
        {
            return cad.GetMaterialesWebSegunAsignaturas(asig);
        }

         /// <summary>
         /// Crea Carpeta
         /// </summary>
         /// <param name="carpeta">carpeta</param>
         /// <param name="titul">título</param>
        public void CrearCarpeta(string carpeta, string titul)
        {
            archivo =  carpeta;
            titulo = titul;
            if (cad.CrearCarpeta(this) == -1) throw new Exception();
        }

         /// <summary>
         /// Elimina materal
         /// </summary>
         /// <param name="id">id</param>
         /// <param name="dir">directorio</param>
        public void EliminarMaterial(string id, string dir)
        {
            cad.EliminarMaterial(id, dir);
        }

        public void SetArchivoWeb(int id, string ruta, string archivo)
        {
            cad.SetArchivoWeb(id, ruta, archivo);
        }

        /// <summary>
        /// Nos trae la ruta de un directorio
        /// </summary>
        /// <param name="dir">directorio</param>
        public void AccedeA(string dir)
        {
            ruta = dir;
        }

        /// <summary>
        /// Vuelve de un directorio
        /// </summary>
        public void Volver()
        {
            ruta = ruta.Substring(0, ruta.Length - 1);
            ruta = ruta.Substring(0, ruta.LastIndexOf("/")+1);
        }

         /// <summary>
         /// Descarga desde un directorio hacia dónde le digas
         /// </summary>
         /// <param name="dir">directorio</param>
         /// <param name="salida">salida</param>
         /// <returns>V si éxito</returns>
        public bool Descargar(string dir, string salida)
        {
            return cad.Descargar(dir, salida);
        }

        public int dimeId()
        {
            return id;
        }

        public void SubirMaterialWeb(ENMaterial en)
        {
            cad.SubirMaterialWeb(en);
        }

        public DataTable dimeElUltimoMaterial(string autor)
        {
            return cad.dimeElUltimoMaterial(autor);  
        }
    }
    
}

